/**
 * 
 */
package xy.util;

import java.io.UnsupportedEncodingException;
import java.math.BigInteger;
import java.security.MessageDigest;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @author LQPC
 * 工具类，可以进行字符串的转码操作以及得到当前日期，修改日期格式等
 */
public class MyTools {
	/**
	 * 将参数指定的字符串由ISO-8859-1编码类型变为gb2312类型
	 * @param str 需要改编的字符串
	 * @return 改编之后的字符串
	 */
	public static String toChinese(String str){
		if(str==null)
			str = "";
		try{
			str = new String(str.getBytes("ISO-8859-1"), "gb2312");
		}catch(UnsupportedEncodingException e){
			str = "";
			e.printStackTrace();
		}
		return str;
	}
	/**
	 * 将参数指定的字符串转换成HTML代码
	 * @param value	要转换的字符串
	 * @return 经过转换之后的字符串
	 */
	public static String changeHTML(String value){
		value = value.replace("&", "&amp;");
		value = value.replace(" ", "&nbsp");
		value = value.replace("<", "&lt;");
		value = value.replace(">", "&gt;");
		value = value.replace("\r\n", "<br />");
		
		return value;
	}
	/**
	 * 将参数指定的日期转换成DateFormat格式
	 * @param date	要转换的日期
	 * @param DateFormat 要转成的的日期格式
	 * @return
	 */
	public static String changeTimeFormat(Date date, String dateFormat){
		SimpleDateFormat format = new SimpleDateFormat(dateFormat);
		return format.format(date);
	}
	/**
	 * 得到当前的日期
	 * @param dateFormat 日期格式
	 * @return 返回用参数指定格式的日期字符
	 */
	public static Date getDate(){
		Date date = new Date(System.currentTimeMillis());
		return date;
	}
	/**
	 * 得到java.sql.Timestamp类型的当前时间
	 * @return
	 */
	public static java.sql.Timestamp getTimestamp(){
		Date date = new Date();
		java.sql.Timestamp timestamp = new java.sql.Timestamp(date.getTime());
		return timestamp;
	}
	/**
	 * 得到当前时间，并且返回指定格式的日期字符串
	 * @return 日期格式的字符串
	 */
	public static String CurrentDateToString(String dateFormat){
		Date date = new Date();
		SimpleDateFormat format = new SimpleDateFormat(dateFormat);
		return format.format(date);
	}
	/**
	 * 将参数指定的日期用指定的格式表示，并返回其字符串形式
	 * @param date
	 * @param dateFormat
	 * @return
	 */
	public static String DateToString(Date date, String dateFormat){
		SimpleDateFormat format = new SimpleDateFormat(dateFormat);
		return format.format(date);
	}
	
	/**
	 * 给指定的参数加密，求参数的MD5值
	 * @param password	
	 * @return	返回password的MD5密值
	 */
	public static String makeMD5(String password) {
		if(password==null)
			return null;
		if(password.equals(""))
			return "";
		MessageDigest md;
		try {
		    // 生成一个MD5加密计算摘要
		    md = MessageDigest.getInstance("MD5");     // 计算md5函数
		    md.update(password.getBytes());
		    // digest()最后确定返回md5 hash值，返回值为8为字符串。因为md5 hash值是16位的hex值，实际上就是8位的字符
		    // BigInteger函数则将8位的字符串转换成16位hex值，用字符串来表示；得到字符串形式的hash值
		    String pwd = new BigInteger(1, md.digest()).toString(16);
		    return pwd;
		} catch (Exception e) {
		    e.printStackTrace();
		}
		return password;
	}	
}
